mysql-clientだけでRails環境構築@Mac
最近では、開発に使うMySQLやPostgresなどのデータベースもDocker上に用意するのが普通だと思います。
他方、Rails+MySQLの開発環境をMacで構築しようとすると大抵トラブるのですが、そこでの解決方法として、MySQL本体を直接インストールする事を提示している例が多いです。
私も過去にはあまり考えずやっちゃってましたが、新しいMacBookに移行するのを機に心を入れ替えました。使わないものはビタ一つ入れたくない。
という訳でここではMac&Docker使用を前提として、クライアントのインストールだけで済ます手順を紹介します。
(そもそも)gem mysql2って何?
Railsの開発ではすっかりお馴染みのgem mysql2
。環境構築の際に必ずトラブるやつですね。あとOSのUpgradeした時とか。
公式サイトによると
This gem links against MySQL's
libmysqlclient
library orConnector/C
library
とあります。ならばクライアントさえあれば動くはず。
という事で以下が手順になります。
1. mysql-client のインストール
クライアントはhomebrewでインストールできます。
# install % brew install mysql-client # installed location % brew --prefix mysql-client /opt/homebrew/opt/mysql-client
2. bundle configの設定
お馴染みbuild config
で、mysql2のnative extensionsをbuildする際のOptionを指定してやります。正しく指定しないと、リンク相手が見つからないでコケます。
なおbuild config
コマンドは設定内容を置き換えしますので、既存設定がある場合は注意。
# set config % bundle config --local build.mysql2 "--with-mysql-config=/opt/homebrew/opt/mysql-client/bin/mysql_config" # confirm % bundle config Settings are listed in order of priority. The top value will be used. : :
ここでは、他にも--with-mysqlclient-lib
や--with-mysqlclient-dir
といったそれっぽいOptionがあるものの、結局↑のような--with-mysql-config
での指定でのみ、ビルドに成功しました。
ここはVerが変わったりするとひょっとしたら違う結果になるかもしれません。上手くいかない場合はお試しください。
3. bundle install
成功すればOKです。
% bundle install : Fetching mysql2 0.5.3 Installing mysql2 0.5.3 with native extensions Fetching oj 3.13.16 :
上手くいかない時は、2に戻って設定内容等を確認してください。 他にもopenssl絡みでビルド失敗するケースなどは有名ですので、合わせて対処してください。
以上です。